import os
import pandas as pd

def save_demographics_to_csv(population_data, distribution_name, output_path):
    """
    将 process_population_data 的输出保存为包含性别信息的 CSV 文件。
    
    参数:
        population_data: 来自 process_population_data 的返回值，是一个包含 5 个 (male, female) 元组的结构
        distribution_name: 分布的名称 (str)，用于标识输出文件名和 CSV 中的标签
        output_path: 输出 CSV 文件夹路径 (str)
    """
    # 解包人口数据
    (ages_m, ages_f), (heights_m, heights_f), (weights_m, weights_f), (bsas_m, bsas_f), (ids_m, ids_f) = population_data

    # 创建输出目录（如果不存在）
    if not os.path.exists(output_path):
        os.makedirs(output_path)

    # 创建男性数据框
    male_data = pd.DataFrame({
        'ID': ids_m,
        'Distribution': [distribution_name] * len(ages_m),
        'Gender': ['Male'] * len(ages_m),
        'Age(years)': ages_m,
        'Height(cm)': heights_m,
        'Weight(kg)': weights_m,
        'BSA (m2)': bsas_m
    })

    # 创建女性数据框
    female_data = pd.DataFrame({
        'ID': ids_f,
        'Distribution': [distribution_name] * len(ages_f),
        'Gender': ['Female'] * len(ages_f),
        'Age(years)': ages_f,
        'Height(cm)': heights_f,
        'Weight(kg)': weights_f,
        'BSA (m2)': bsas_f
    })

    # 合并性别数据
    all_data = pd.concat([male_data, female_data]).reset_index(drop=True)

    # 保存为 CSV 文件
    filename = f"{output_path}\\{distribution_name}_demographics.csv"
    try:
        all_data.to_csv(filename, index=False, encoding='utf-8')  # 确保使用 UTF-8 编码
        print(f"Saved {distribution_name} demographics to {filename}")
    except PermissionError:
        print(f"无法保存文件 {filename}，请检查权限或选择其他路径。")
